#!/usr/bin/env bash
#/ Usage: script/clone-example-repos
#/
#/ Clone some example repositories for smoke testing parsing, assignment, and precise ASTs.
#/
#/ NOTES:
#/   - This script is intended to be called by `test/Examples.hs`

set -e
cd $(dirname "$0")/..

mkdir -p tmp

# clone_repo LOCAL_PATH URL SHA
function clone_repo {
  path=$1
  url="https://github.com/$2"
  sha=$3

  if [ ! -d "$path" ]; then
    echo "Cloning $url@$sha"
    git clone "$url" "$path"
  else
    echo "$url@$sha already exists"
  fi

  pushd "$path" > /dev/null # && git pull -q # NB: Enable this if you need to pin to a different sha for one of the repos.
  git reset --hard -q $sha
  popd > /dev/null
}

go_examples="tmp/go-examples"
clone_repo "$go_examples/go" golang/go 870e12d7bfaea70fb0d743842f5864eb059cb939
clone_repo "$go_examples/moby" moby/moby f57f260b49b6142366e6bc1274204ee0a1205945

python_examples="tmp/python-examples"
clone_repo "$python_examples/numpy" numpy/numpy 058851c5cfc98f50f11237b1c13d77cfd1f40475
clone_repo "$python_examples/thealgorithms" thealgorithms/python c6be53e1c43f870f5364eef1499ee1b411c966fb
clone_repo "$python_examples/flask" pallets/flask 0b5b4a66ef99c8b91569dd9b9b34911834689d3f
clone_repo "$python_examples/httpie" jakubroztocil/httpie 358342d1c915d6462a080a77aefbb20166d0bd5d
clone_repo "$python_examples/keras" keras-team/keras e59570ae26670f788d6c649191031e4a8824f955
clone_repo "$python_examples/requests" requests/requests 64bde6582d9b49e9345d9b8df16aaa26dc372d13
clone_repo "$python_examples/scikit-learn" scikit-learn/scikit-learn d0f63a760d9993a7f68cfc5e1a075700d67c53d3
clone_repo "$python_examples/scrapy" scrapy/scrapy 65d631329a1434ec013f24341e4b8520241aec70
clone_repo "$python_examples/pytorch" pytorch/pytorch c865d46736db4afff51690a712e35ed8e3899490
clone_repo "$python_examples/certbot" certbot/certbot bb8222200a8cbd39a3ce9584ce6dfed6c5d05228

ruby_examples="tmp/ruby-examples"
clone_repo "$ruby_examples/ruby_spec" ruby/spec c3e6b9017926f44a76e2b966c4dd35fa84c4cd3b

ts_examples="tmp/typescript-examples"
clone_repo "$ts_examples/desktop" desktop/desktop d1324f56d02dd9afca5d2e9da545905a7d41d671
clone_repo "$ts_examples/npm" npm/npm ee147fbbca6f2707d3b16f4fa78f4c4606b2d9b1

# java_examples="$dir/tree-sitter-java/vendor/tree-sitter-java/examples"
# clone_repo "$java_examples/elasticsearch" elastic/elasticsearch 4d62640bf116af7e825d89c7319a39c3f2f325b4
# clone_repo "$java_examples/guava" google/guava e24fddc5fff7fd36d33ea38737b6606a7e476845
# clone_repo "$java_examples/RxJava" ReactiveX/RxJava 8a6bf14fc9a61f7c1c0016ca217be02ca86211d2

# haskell_examples="$dir/tree-sitter-haskell/vendor/tree-sitter-haskell/examples"
# clone_repo "$haskell_examples/effects" joshvera/effects 08f5f36f2600362685af593f4b327e933b60bf97
# clone_repo "$haskell_examples/postgrest" PostgRest/postgrest f80cfbf165f951a062b3cbedac4556019905ca49
# clone_repo "$haskell_examples/ivory" GaloisInc/ivory 3d00324ad1c113c7e70957ff6a6d636d271d0fc4
